﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Serviços.BDServices;
using TCC_Hotel.Entidades;

namespace TCC_Hotel.Apresentacao.Reservas
{
    public partial class DetalharReservasFaturadas : System.Web.UI.Page
    {
        ReservaService servico = new ReservaService();
        ApartamentoService servico_Apartamento = new ApartamentoService();

        /// <summary>
        /// Carregamento da página
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();
            LoginService servico_Login = new LoginService();
            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Reservas)
            {
                //Redireciona para a pagina inicial
                Response.Redirect("~/");
            }


            if (!IsPostBack)
            {
                //Se nao vier parametro, redireciona o usuario para a tela inicial
                if (Request.Params["id"] == null || Request.Params["dataFim"] == null)
                {
                    //Redireciona para a pagina inicial
                    Response.Redirect("~/");
                }

                //Recupera o parametro da URL
                string ID = Request.Params["id"];
                DateTime dataFim;
                DateTime.TryParse(Request.Params["dataFim"], out dataFim);

                //se for reserva atrasada bloqueia o botão de editar
                if (dataFim < DateTime.Today && !(dataFim == DateTime.Now.AddDays(-1).Date && DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 12))
                {
                    btnEditar.Visible = false;
                }

                //chama o serviço que busca no banco de dados o funcionario correspondente
                Reserva_Faturada reserva = servico.RecuperarDetalhesReservaFaturada(Convert.ToInt32(ID));

                string apartamento = servico_Apartamento.RecuperarDetalhesApartamento(reserva.Numero_Apartamento).Nome;

                //Monta o formulario para o usuario
                if (reserva != null)
                {
                    txtEmpresa.Text = reserva.Empresa_Reserva;                    
                    txtTelefone.Text = reserva.Telefone;
                    txtEmailReserva.Text = reserva.Email_Reserva;
                    txtCNPJReserva.Text = reserva.CNPJ_Reserva;
                    txtDataInicio.Text = Convert.ToString(reserva.Data_Inicio).Substring(0, 10);
                    txtDataFinal.Text = Convert.ToString(reserva.Data_Final).Substring(0, 10);
                    txtApartamento.Text = apartamento;
                    txtNome1.Text = reserva.Nome_1;
                    txtRG1.Text = reserva.RG_1;
                    txtNome2.Text = reserva.Nome_2;
                    txtRG2.Text = reserva.RG_2;
                    txtNome3.Text = reserva.Nome_3;
                    txtRG3.Text = reserva.RG_3;
                    txtNome4.Text = reserva.Nome_4;
                    txtRG4.Text = reserva.RG_4;
                    txtNome5.Text = reserva.Nome_5;
                    txtRG5.Text = reserva.RG_5;
                }
            }
        }

        /// <summary>
        /// Evento de click do botao voltar 
        /// </summary>
        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            //Redireciona para a pagina anterior
            Response.Redirect("~/Apresentacao/Reservas/ListarReservasFaturadas.aspx");
        }

        /// <summary>
        /// Evento de click do botao editar 
        /// </summary>
        protected void btnEditar_Click(object sender, EventArgs e)
        {
            //Recupera o parametro da URL
            string ID = Request.Params["id"];

            //chama o serviço que busca no banco de dados o funcionario correspondente
            Reserva_Faturada reserva = servico.RecuperarDetalhesReservaFaturada(Convert.ToInt32(ID));
            Apartamento apartamento = servico_Apartamento.RecuperarDetalhesApartamento(reserva.Numero_Apartamento);


            //Redireciona para a pagina de editar correspondente com o CPF como parametro
            Response.Redirect("~/Apresentacao/Reservas/EditarReservasFaturadas.aspx?numeroHospedes=" + apartamento.QntMaximaHospedes + "&numeroApartamento=" + apartamento.Numero + "&id=" + ID);

        }
    }
}